#include "widget.h"
#include "ui_widget.h"
#include <QDebug>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    // 先向ListWidget里面添加一些元素
//    ui->listWidget->addItem("C++");
//    ui->listWidget->addItem("C语言");
//    ui->listWidget->addItem("java");
//    ui->listWidget->addItem("python");

    // 也可以通过QListWidgetItem添加
    ui->listWidget->addItem(new QListWidgetItem("C++"));
    ui->listWidget->addItem(new QListWidgetItem("C语言"));
    ui->listWidget->addItem(new QListWidgetItem("java"));
    ui->listWidget->addItem(new QListWidgetItem("Python"));
    // 而且在QListWidgetItem中，也可以设置字体属性、设置图标、设置字体大小、设置是否能被选中等状态
}

Widget::~Widget()
{
    delete ui;
}


void Widget::on_pushButton_insert_clicked()
{
    // 先获取到输入框中的内容
    const QString& content = ui->lineEdit->text();
    // 添加到ListWidget中
    if (!content.isEmpty()) {
      ui->listWidget->addItem(content); // 默认插入到末尾
    }
}

void Widget::on_pushButton_remove_clicked()
{
    // 先获取到被选中的元素是哪个(是第几行的)
    int row = ui->listWidget->currentRow();
    // 如果没有元素被选到，则什么都不做
    if (row < 0) {
        return;
    }
    ui->listWidget->takeItem(row);

}

void Widget::on_listWidget_currentItemChanged(QListWidgetItem *current, QListWidgetItem *previous)
{
    //  通过这个槽函数，可以感知到变化
    if (current != nullptr) {
        qDebug() << "当前选中的元素是: " << current->text();
    }
    if (previous != nullptr) {
        qDebug() << "上次选中的元素是: " << previous->text();
    }

}
